#ifndef DOWNLOADHISTORY_H
#define DOWNLOADHISTORY_H

#include <QtCore/QObject>
#include <QtCore/QList>
#include <QtCore/QDateTime>
#include <QtCore/QString>

struct DownloadRecord {
    QString url;
    QString fileName;
    QString filePath;
    qint64 fileSize;
    QDateTime startTime;
    QDateTime endTime;
    bool completed;
    QString category;
    QStringList tags;
};

class DownloadHistory : public QObject
{
    Q_OBJECT

public:
    explicit DownloadHistory(QObject *parent = nullptr);
    ~DownloadHistory();

    // 添加下载记录
    void addRecord(const DownloadRecord &record);
    
    // 获取所有记录
    const QList<DownloadRecord>& getRecords() const;
    
    // 根据分类获取记录
    QList<DownloadRecord> getRecordsByCategory(const QString &category) const;
    
    // 根据标签获取记录
    QList<DownloadRecord> getRecordsByTag(const QString &tag) const;
    
    // 根据文件名搜索记录
    QList<DownloadRecord> searchRecords(const QString &keyword) const;
    
    // 删除记录
    void removeRecord(int index);
    
    // 清空所有记录
    void clearHistory();
    
    // 保存历史记录到文件
    void saveHistory();
    
    // 从文件加载历史记录
    void loadHistory();

private:
    QList<DownloadRecord> m_records;
};

#endif // DOWNLOADHISTORY_H